package com.tz.crm.dao;


import com.tz.crm.entity.Department;
import com.tz.crm.entity.User;
import com.tz.crm.utils.Pager;

import java.util.List;

/**
 * 部门接口
 */
public interface DepartmentDao extends BaseDao<Department, String> {

    /**
     * 根据部门id查找部门信息
     *
     * @param id 部门id
     * @return 部门
     */
    Department getById(String id);

    /**
     * 根据部门名查询部门信息(将带出所有子部门信息)
     *
     * @param name 部门名
     * @return 部门（包含子部门）
     */
    Department getDeptWithChildren(String name);

    /**
     * 根据部门名查找部门信息
     *
     * @param deptName 部门名
     * @return 部门
     */
    Department get(String deptName);

    /**
     * 根据部门名称查找部门所有员工列表
     *
     * @param deptName 部门名
     * @return 员工列表
     */
    List<User> getByName(String deptName);

    /**
     * 根据部门名称查找部门员工列表(分页)
     *
     * @param name  部门名
     * @param pager 分页信息
     * @return 员工列表
     */
    //todo: trim
    List<User> getByDepartmentName(String name, Pager pager);

    /**
     * 查询根部门
     *
     * @return Department
     */
    Department getRoot();
}
